package com.hsurosy.hsuchain.nft.user.infrastructure.exception;

import com.hsurosy.hsuchain.nft.base.exception.ErrorCode;

/**
 * 用户错误码枚举
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 18:12
 * @Description
 * @Version: v1.0.0
 */
public enum UserErrorCode implements ErrorCode {

    /**
     * 重复电话号码
     * <p>表示用户提供的电话号码已经存在，无法重复注册。</p>
     */
    DUPLICATE_TELEPHONE_NUMBER("DUPLICATE_TELEPHONE_NUMBER", "重复电话号码"),

    /**
     * 用户状态不能进行实名认证
     * <p>用户当前的状态不允许进行实名认证操作。</p>
     */
    USER_STATUS_IS_NOT_INIT("USER_STATUS_IS_NOT_INIT", "用户状态不能进行实名认证"),

    /**
     * 用户不存在
     * <p>表示系统中找不到指定的用户。</p>
     */
    USER_NOT_EXIST("USER_NOT_EXIST", "用户不存在"),

    /**
     * 用户状态不能进行操作
     * <p>当前用户的状态不允许执行某些操作。</p>
     */
    USER_STATUS_CANT_OPERATE("USER_STATUS_CANT_OPERATE", "用户状态不能进行操作"),

    /**
     * 用户状态未激活成功
     * <p>用户尚未激活，无法继续进行相关操作。</p>
     */
    USER_STATUS_IS_NOT_ACTIVE("USER_STATUS_IS_NOT_ACTIVE", "用户状态未激活成功"),

    /**
     * 用户操作失败
     * <p>通用的用户操作失败错误码。</p>
     */
    USER_OPERATE_FAILED("USER_OPERATE_FAILED", "用户操作失败"),

    /**
     * 用户实名认证失败
     * <p>用户实名认证过程失败。</p>
     */
    USER_AUTH_FAIL("USER_AUTH_FAIL", "用户实名认证失败"),

    /**
     * 用户密码校验失败
     * <p>用户输入的密码校验不通过。</p>
     */
    USER_PASSWD_CHECK_FAIL("USER_PASSWD_CHECK_FAIL", "用户密码校验失败"),

    /**
     * 用户查询失败
     * <p>查询用户信息时出现错误。</p>
     */
    USER_QUERY_FAIL("USER_QUERY_FAIL", "用户查询失败"),

    /**
     * 用户名已存在
     * <p>指定的用户名已经存在，无法重复使用。</p>
     */
    NICK_NAME_EXIST("NICK_NAME_EXIST", "用户名已存在"),

    /**
     * 用户创建链账号失败
     * <p>用户创建链上账号的过程中发生了错误。</p>
     */
    USER_CREATE_CHAIN_FAIL("USER_CREATE_CHAIN_FAIL", "用户创建链账号失败"),

    /**
     * 用户状态不能进行激活
     * <p>当前用户状态不允许进行激活操作。</p>
     */
    USER_STATUS_IS_NOT_AUTH("USER_STATUS_IS_NOT_AUTH", "用户状态不能进行激活"),

    /**
     * 用户上传图片失败
     * <p>用户上传头像或其他图片时出现错误。</p>
     */
    USER_UPLOAD_PICTURE_FAIL("USER_UPLOAD_PICTURE_FAIL", "用户上传图片失败");

    /**
     * 错误码
     */
    private final String code;

    /**
     * 错误信息
     */
    private final String message;

    /**
     * 构造方法
     *
     * @param code 错误码
     * @param message 错误信息
     */
    UserErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 获取错误码
     *
     * @return 错误码
     */
    @Override
    public String getCode() {
        return this.code;
    }

    /**
     * 获取错误信息
     *
     * @return 错误信息
     */
    @Override
    public String getMessage() {
        return this.message;
    }
}
